package com.government.item.mapper;

import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.government.app.bo.KeywordSearchBO;
import com.government.app.vo.KeywordSearchVO;
import com.government.article.domain.ArticlePolicy;
import com.government.item.bo.ItemDataListBO;
import com.government.item.bo.SelectItemByPolicyBO;
import com.government.item.domain.ExcelDetail;
import com.government.item.vo.ItemData;
import org.apache.ibatis.annotations.Param;

/**
 * 立项查询Mapper接口
 *
 * @author system
 * @date 2023-10-16
 */
public interface ExcelDetailMapper extends BaseMapper<ExcelDetail>
{
    /**
     * 查询立项查询
     *
     * @param id 立项查询主键
     * @return 立项查询
     */
    public ExcelDetail selectExcelDetailById(Long id);

    /**
     * 查询立项查询列表
     *
     * @param excelDetail 立项查询
     * @return 立项查询集合
     */
    public List<ExcelDetail> selectExcelDetailList(ExcelDetail excelDetail);

    /**
     * 新增立项查询
     *
     * @param excelDetail 立项查询
     * @return 结果
     */
    public int insertExcelDetail(ExcelDetail excelDetail);

    /**
     * 修改立项查询
     *
     * @param excelDetail 立项查询
     * @return 结果
     */
    public int updateExcelDetail(ExcelDetail excelDetail);

    /**
     * 根据企业名称修改企业id
     *
     * @param excelDetail 立项查询
     * @return 结果
     */
    public int updateExcelDetailByCompany(@Param("companyName") String companyName, @Param("companyId") Long companyId);

    /**
     * 删除立项查询
     *
     * @param id 立项查询主键
     * @return 结果
     */
    public int deleteExcelDetailById(Long id);

    /**
     * 批量删除立项查询
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteExcelDetailByIds(Long[] ids);

    /**
     * 立项信息搜索
     * @param bo
     * @return
     */
    List<KeywordSearchVO> searchExcelDetailList(KeywordSearchBO bo);

    /**
     * 根据条件查询立项数据
     * @param policyId
     * @return
     */
    List<ItemData> selectItemDataList(ItemDataListBO bo);

    List<ItemData> selectCompanyItemDataList(ItemDataListBO bo);

    List<ItemData> selectCompanyItemDataStatistics(ItemDataListBO bo);

    List<ArticlePolicy> selectItemDataStatistics(@Param("companyNameList") List<String> companyNameList);

    ExcelDetail selectItemByPolicyAndCompany(SelectItemByPolicyBO bo);

    void deleteItemByPolicyId(@Param("policyId") long policyId);

}
